κ³ κΈ λΌμ°ν λ° νμ€ν 리 κ΄λ¦¬ κΈ°λ₯μ κ°μΆ νλμ μ΄κ³ μ±λ₯μ΄ λ°μ΄λ λ¨μΌ νμ΄μ§ μ ν리μΌμ΄μ (SPA) ꡬμΆμ μν Navigation API μ’ ν© κ°μ΄λμ λλ€.
Navigation API λ§μ€ν°νκΈ°: λ¨μΌ νμ΄μ§ μ ν리μΌμ΄μ λΌμ°ν λ° νμ€ν 리 κ΄λ¦¬
Navigation APIλ λ¨μΌ νμ΄μ§ μ ν리μΌμ΄μ (SPA) λ΄μμ λΌμ°ν λ° νμ€ν 리 κ΄λ¦¬λ₯Ό μ²λ¦¬νλ λ°©μμ μμ΄ μ€μν λ°μ μ μλ―Έν©λλ€. κΈ°μ‘΄ λ°©μμ μ’ μ’ `window.location` κ°μ²΄λ₯Ό μ‘°μνκ±°λ μλνν° λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νλ λ° μμ‘΄νμ΅λλ€. μ΄λ¬ν μ κ·Ό λ°©μλ νλ₯νμ§λ§, Navigation APIλ λ κ°μνλκ³ μ±λ₯μ΄ λ°μ΄λλ©° νλΆν κΈ°λ₯μ κ°μΆ μ루μ μ μ 곡νμ¬ κ°λ°μκ° μ¬μ©μμ λ΄λΉκ²μ΄μ κ²½νμ λ ν¨κ³Όμ μΌλ‘ μ μ΄ν μ μκ² ν΄μ€λλ€.
Navigation APIλ 무μμΈκ°?
Navigation APIλ SPAκ° λ΄λΉκ²μ΄μ , λΌμ°ν , νμ€ν 리λ₯Ό κ΄λ¦¬νλ λ°©μμ λ¨μννκ³ ν₯μμν€κΈ° μν΄ μ€κ³λ μ΅μ λΈλΌμ°μ APIμ λλ€. μ΄λ μλ‘μ΄ `navigation` κ°μ²΄λ₯Ό λμ νμ¬, κ°λ°μκ° μ 체 νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ λ΄λΉκ²μ΄μ μ΄λ²€νΈλ₯Ό κ°λ‘μ±κ³ μ μ΄νλ©°, URLμ μ λ°μ΄νΈνκ³ , μΌκ΄λ λΈλΌμ°μ§ νμ€ν 리λ₯Ό μ μ§ν μ μλ λ©μλμ μ΄λ²€νΈλ₯Ό μ 곡ν©λλ€. κ·Έ κ²°κ³Ό λ λΉ λ₯΄κ³ λΆλλ¬μ°λ©° λ°μμ±μ΄ λ°μ΄λ μ¬μ©μ κ²½νμ μ 곡ν μ μμ΅λλ€.
Navigation API μ¬μ©μ μ΄μ
- μ±λ₯ ν₯μ: μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ μμ μ€μΌλ‘μ¨ Navigation APIλ SPAμ μ±λ₯μ ν¬κ² ν₯μμν΅λλ€. μ¬λ¬ λ·° μ¬μ΄μ μ νμ΄ λ λΉ λ₯΄κ³ λΆλλ¬μμ Έ λμ± λ§€λ ₯μ μΈ μ¬μ©μ κ²½νμΌλ‘ μ΄μ΄μ§λλ€.
- ν₯μλ μ μ΄: μ΄ APIλ λ΄λΉκ²μ΄μ μ΄λ²€νΈμ λν μΈλ°ν μ μ΄λ₯Ό μ 곡νμ¬ κ°λ°μκ° νμμ λ°λΌ λ΄λΉκ²μ΄μ λμμ κ°λ‘μ±κ³ μμ ν μ μκ² ν©λλ€. μ¬κΈ°μλ λ΄λΉκ²μ΄μ λ°©μ§, μ¬μ©μ 리λλ μ , λ΄λΉκ²μ΄μ μ νμ μ¬μ©μ μ μ λ‘μ§ μ€ν λ±μ΄ ν¬ν¨λ©λλ€.
- κ°μνλ νμ€ν 리 κ΄λ¦¬: Navigation APIλ₯Ό μ¬μ©νλ©΄ λΈλΌμ°μ μ νμ€ν 리 μ€ν κ΄λ¦¬κ° λ μ¬μμ§λλ€. κ°λ°μλ νλ‘κ·Έλλ° λ°©μμΌλ‘ νμ€ν 리 νλͺ©μ μΆκ°, κ΅μ²΄, νμνμ¬ μΌκ΄λκ³ μμΈ‘ κ°λ₯ν λΈλΌμ°μ§ κ²½νμ 보μ₯ν μ μμ΅λλ€.
- μ μΈμ λ΄λΉκ²μ΄μ : Navigation APIλ λΌμ°ν μ λν μ μΈμ μ κ·Ό λ°©μμ μ₯λ €νμ¬ κ°λ°μκ° λͺ ννκ³ κ°κ²°ν λ°©μμΌλ‘ λ΄λΉκ²μ΄μ κ·μΉκ³Ό λμμ μ μν μ μκ² ν©λλ€. μ΄λ μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν΅λλ€.
- μ΅μ νλ μμν¬μμ ν΅ν©: Navigation APIλ React, Angular, Vue.jsμ κ°μ μ΅μ μλ°μ€ν¬λ¦½νΈ νλ μμν¬ λ° λΌμ΄λΈλ¬λ¦¬μ μννκ² ν΅ν©λλλ‘ μ€κ³λμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ κΈ°μ‘΄ κ°λ° μν¬νλ‘μ° λ΄μμ APIμ κΈ°λ₯μ νμ©ν μ μμ΅λλ€.
ν΅μ¬ κ°λ λ° κΈ°λ₯
1. `navigation` κ°μ²΄
Navigation APIμ ν΅μ¬μ `navigation` κ°μ²΄μ΄λ©°, μ΄λ μ μ `window` κ°μ²΄(`window.navigation`)λ₯Ό ν΅ν΄ μ κ·Όν μ μμ΅λλ€. μ΄ κ°μ²΄λ λ€μκ³Ό κ°μ λ΄λΉκ²μ΄μ κ΄λ ¨ λ€μν μμ± λ° λ©μλμ λν μ κ·Όμ μ 곡ν©λλ€:
- `currentEntry`: λ΄λΉκ²μ΄μ νμ€ν 리μ νμ¬ νλͺ©μ λνλ΄λ `NavigationHistoryEntry` κ°μ²΄λ₯Ό λ°νν©λλ€.
- `entries()`: λ΄λΉκ²μ΄μ νμ€ν 리μ λͺ¨λ νλͺ©μ λνλ΄λ `NavigationHistoryEntry` κ°μ²΄μ λ°°μ΄μ λ°νν©λλ€.
- `navigate(url, { state, info, replace })`: μλ‘μ΄ URLλ‘ μ΄λν©λλ€.
- `back()`: μ΄μ νμ€ν 리 νλͺ©μΌλ‘ λμκ°λλ€.
- `forward()`: λ€μ νμ€ν 리 νλͺ©μΌλ‘ μμΌλ‘ μ΄λν©λλ€.
- `reload()`: νμ¬ νμ΄μ§λ₯Ό μλ‘κ³ μΉ¨ν©λλ€.
- `addEventListener(event, listener)`: λ΄λΉκ²μ΄μ κ΄λ ¨ μ΄λ²€νΈμ λν μ΄λ²€νΈ 리μ€λλ₯Ό μΆκ°ν©λλ€.
2. `NavigationHistoryEntry`
`NavigationHistoryEntry` μΈν°νμ΄μ€λ λ΄λΉκ²μ΄μ νμ€ν 리μ λ¨μΌ νλͺ©μ λνλ λλ€. μ΄λ URL, μν, κ³ μ IDμ κ°μ νλͺ©μ λν μ 보λ₯Ό μ 곡ν©λλ€.
- `url`: νμ€ν 리 νλͺ©μ URLμ λλ€.
- `key`: νμ€ν 리 νλͺ©μ κ³ μ μλ³μμ λλ€.
- `id`: λ΄λΉκ²μ΄μ μ΄λ²€νΈμ μλͺ μ£ΌκΈ°λ₯Ό μΆμ νλ λ° νΉν μ μ©ν λ λ€λ₯Έ κ³ μ μλ³μμ λλ€.
- `sameDocument`: λ΄λΉκ²μ΄μ μ΄ λμΌ λ¬Έμ λ΄λΉκ²μ΄μ μΌλ‘ μ΄μ΄μ§λμ§λ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λλ€.
- `getState()`: νμ€ν 리 νλͺ©κ³Ό μ°κ΄λ μνλ₯Ό λ°νν©λλ€ (λ΄λΉκ²μ΄μ μ€μ μ€μ λ¨).
3. λ΄λΉκ²μ΄μ μ΄λ²€νΈ
Navigation APIλ κ°λ°μκ° λ΄λΉκ²μ΄μ λμμ λͺ¨λν°λ§νκ³ μ μ΄ν μ μλλ‘ μ¬λ¬ μ΄λ²€νΈλ₯Ό λ°μμν΅λλ€. μ΄λ¬ν μ΄λ²€νΈλ λ€μκ³Ό κ°μ΅λλ€:
- `navigate`: λ΄λΉκ²μ΄μ μ΄ μμλ λ(μ: λ§ν¬ ν΄λ¦, νΌ μ μΆ, `navigation.navigate()` νΈμΆ) λ°μν©λλ€. μ΄λ λ΄λΉκ²μ΄μ μμ²μ κ°λ‘μ±κ³ μ²λ¦¬νλ μ£Όμ μ΄λ²€νΈμ λλ€.
- `navigatesuccess`: λ΄λΉκ²μ΄μ μ΄ μ±κ³΅μ μΌλ‘ μλ£λ λ λ°μν©λλ€.
- `navigateerror`: λ΄λΉκ²μ΄μ μ΄ μ€ν¨ν λ(μ: λ€νΈμν¬ μ€λ₯ λλ μ²λ¦¬λμ§ μμ μμΈ) λ°μν©λλ€.
- `currentchange`: νμ¬ νμ€ν 리 νλͺ©μ΄ λ³κ²½λ λ(μ: μλ€λ‘ μ΄λ μ) λ°μν©λλ€.
- `dispose`: `replaceState` μμ μ€ νμ€ν 리μμ μ κ±°λλ λ± `NavigationHistoryEntry`μ λ μ΄μ μ κ·Όν μ μμ λ λ°μν©λλ€.
Navigation APIλ‘ λΌμ°ν ꡬννκΈ°: μ€μ©μ μΈ μμ
Navigation APIλ₯Ό μ¬μ©νμ¬ κ°λ¨ν SPAμμ κΈ°λ³Έ λΌμ°ν μ ꡬννλ λ°©λ²μ μ΄ν΄λ³΄κ² μ΅λλ€. ν, μ 보, μ°λ½μ² μΈ κ°μ λ·°λ₯Ό κ°μ§ μ ν리μΌμ΄μ μ κ°μ ν΄ λ΄ μλ€.
λ¨Όμ , λΌμ°νΈ λ³κ²½μ μ²λ¦¬νλ ν¨μλ₯Ό λ§λλλ€:
function handleRouteChange(url) {
const contentDiv = document.getElementById('content');
switch (url) {
case '/':
contentDiv.innerHTML = 'ν
ν νμ΄μ§μ μ€μ κ²μ νμν©λλ€!
';
break;
case '/about':
contentDiv.innerHTML = 'μ 보
μ ν¬μ λν΄ λ μμ보μΈμ.
';
break;
case '/contact':
contentDiv.innerHTML = 'μ°λ½μ²
μ ν¬μκ² μ°λ½μ£ΌμΈμ.
';
break;
default:
contentDiv.innerHTML = '404 μ°Ύμ μ μμ
νμ΄μ§λ₯Ό μ°Ύμ μ μμ΅λλ€.
';
}
}
λ€μμΌλ‘, `navigate` μ΄λ²€νΈμ μ΄λ²€νΈ 리μ€λλ₯Ό μΆκ°ν©λλ€:
window.navigation.addEventListener('navigate', (event) => {
const url = new URL(event.destination.url).pathname;
event.preventDefault(); // κΈ°λ³Έ λΈλΌμ°μ λ΄λΉκ²μ΄μ
λ°©μ§
const promise = new Promise((resolve) => {
handleRouteChange(url);
resolve(); // λΌμ°νΈ μ²λ¦¬ ν νλ‘λ―Έμ€ ν΄κ²°
});
event.transition = promise;
});
μ΄ μ½λλ `navigate` μ΄λ²€νΈλ₯Ό κ°λ‘μ±κ³ , `event.destination` κ°μ²΄μμ URLμ μΆμΆνκ³ , κΈ°λ³Έ λΈλΌμ°μ λ΄λΉκ²μ΄μ μ λ°©μ§νκ³ , `handleRouteChange`λ₯Ό νΈμΆνμ¬ μ½ν μΈ λ₯Ό μ λ°μ΄νΈν λ€μ, `event.transition` νλ‘λ―Έμ€λ₯Ό μ€μ ν©λλ€. `event.transition`μ μ€μ νλ©΄ λΈλΌμ°μ κ° μ½ν μΈ μ λ°μ΄νΈκ° μλ£λ λκΉμ§ κΈ°λ€λ Έλ€κ° νμ΄μ§λ₯Ό μκ°μ μΌλ‘ μ λ°μ΄νΈνκ² λ©λλ€.
λ§μ§λ§μΌλ‘, λ΄λΉκ²μ΄μ μ νΈλ¦¬κ±°νλ λ§ν¬λ₯Ό λ§λ€ μ μμ΅λλ€:
ν | μ 보 | μ°λ½μ²
κ·Έλ¦¬κ³ ν΄λΉ λ§ν¬μ ν΄λ¦ 리μ€λλ₯Ό μΆκ°ν©λλ€:
document.addEventListener('click', (event) => {
if (event.target.tagName === 'A' && event.target.hasAttribute('data-navigo')) {
event.preventDefault();
window.navigation.navigate(event.target.href);
}
});
μ΄κ²μΌλ‘ Navigation APIλ₯Ό μ¬μ©ν κΈ°λ³Έ ν΄λΌμ΄μΈνΈ μ¬μ΄λ λΌμ°ν μ΄ μ€μ λμμ΅λλ€. μ΄μ λ§ν¬λ₯Ό ν΄λ¦νλ©΄ μ 체 νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ `content` divμ μ½ν μΈ λ₯Ό μ λ°μ΄νΈνλ λ΄λΉκ²μ΄μ μ΄λ²€νΈκ° νΈλ¦¬κ±°λ©λλ€.
μν κ΄λ¦¬ μΆκ°
Navigation APIλ κ° νμ€ν 리 νλͺ©μ μνλ₯Ό μ°κ²°ν μλ μμ΅λλ€. μ΄λ λ΄λΉκ²μ΄μ μ΄λ²€νΈ κ°μ λ°μ΄ν°λ₯Ό 보쑴νλ λ° μ μ©ν©λλ€. μ΄μ μμ λ₯Ό μμ νμ¬ μν κ°μ²΄λ₯Ό ν¬ν¨μμΌ λ³΄κ² μ΅λλ€.
`navigation.navigate()`λ₯Ό νΈμΆν λ `state` κ°μ²΄λ₯Ό μ λ¬ν μ μμ΅λλ€:
window.navigation.navigate('/about', { state: { pageTitle: 'νμ¬ μκ°' } });
`navigate` μ΄λ²€νΈ 리μ€λ λ΄μμ `event.destination.getState()`λ₯Ό μ¬μ©νμ¬ μνμ μ κ·Όν μ μμ΅λλ€:
window.navigation.addEventListener('navigate', (event) => {
const url = new URL(event.destination.url).pathname;
const state = event.destination.getState();
event.preventDefault();
const promise = new Promise((resolve) => {
handleRouteChange(url, state);
resolve();
});
event.transition = promise;
});
function handleRouteChange(url, state = {}) {
const contentDiv = document.getElementById('content');
let title = state.pageTitle || 'λ΄ μ±'; // κΈ°λ³Έ μ λͺ©
switch (url) {
case '/':
contentDiv.innerHTML = 'ν
ν νμ΄μ§μ μ€μ κ²μ νμν©λλ€!
';
title = 'ν';
break;
case '/about':
contentDiv.innerHTML = 'μ 보
μ ν¬μ λν΄ λ μμ보μΈμ.
';
break;
case '/contact':
contentDiv.innerHTML = 'μ°λ½μ²
μ ν¬μκ² μ°λ½μ£ΌμΈμ.
';
break;
default:
contentDiv.innerHTML = '404 μ°Ύμ μ μμ
νμ΄μ§λ₯Ό μ°Ύμ μ μμ΅λλ€.
';
title = '404 μ°Ύμ μ μμ';
}
document.title = title;
}
μ΄ μμ λ μμ μμ `handleRouteChange` ν¨μλ μ΄μ `state` λ§€κ°λ³μλ₯Ό λ°μ λ¬Έμ μ λͺ©μ μ λ°μ΄νΈνλ λ° μ¬μ©ν©λλ€. μνκ° μ λ¬λμ§ μμΌλ©΄ κΈ°λ³Έκ°μΌλ‘ 'λ΄ μ±'μ΄ μ¬μ©λ©λλ€.
`navigation.updateCurrentEntry()` μ¬μ©νκΈ°
λλ‘λ μλ‘μ΄ λ΄λΉκ²μ΄μ μ νΈλ¦¬κ±°νμ§ μκ³ νμ¬ νμ€ν 리 νλͺ©μ μνλ§ μ λ°μ΄νΈνκ³ μΆμ μ μμ΅λλ€. `navigation.updateCurrentEntry()` λ©μλλ₯Ό μ¬μ©νλ©΄ μ΄ μμ μ μνν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° νμ¬ νμ΄μ§μμ μ€μ μ λ³κ²½νλ©΄ ν΄λΉ λ³κ²½ μ¬νμ λ°μνλλ‘ μνλ₯Ό μ λ°μ΄νΈν μ μμ΅λλ€:
function updateUserSetting(setting, value) {
const currentState = navigation.currentEntry.getState() || {};
const newState = { ...currentState, [setting]: value };
navigation.updateCurrentEntry({ state: newState });
console.log('μ€μ μ
λ°μ΄νΈ:', setting, '->', value);
}
// μ¬μ© μμ:
updateUserSetting('theme', 'dark');
μ΄ ν¨μλ νμ¬ μνλ₯Ό κ°μ Έμ μ λ°μ΄νΈλ μ€μ μ λ³ν©ν λ€μ, νμ¬ νμ€ν 리 νλͺ©μ μ μνλ‘ μ λ°μ΄νΈν©λλ€.
κ³ κΈ μ¬μ© μ¬λ‘ λ° κ³ λ € μ¬ν
1. νΌ μ μΆ μ²λ¦¬
Navigation APIλ SPAμμ νΌ μ μΆμ μ²λ¦¬νλ λ° μ¬μ©λ μ μμΌλ©°, μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ λ°©μ§νκ³ λ μνν μ¬μ©μ κ²½νμ μ 곡ν©λλ€. νΌ μ μΆ μ΄λ²€νΈλ₯Ό κ°λ‘μ±κ³ `navigation.navigate()`λ₯Ό μ¬μ©νμ¬ URLμ μ λ°μ΄νΈνκ³ μ 체 νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ κ²°κ³Όλ₯Ό νμν μ μμ΅λλ€.
2. λΉλκΈ° μμ
λ΄λΉκ²μ΄μ μ΄λ²€νΈλ₯Ό μ²λ¦¬ν λ APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ κ²κ³Ό κ°μ λΉλκΈ° μμ μ μνν΄μΌ ν μ μμ΅λλ€. `event.transition` μμ±μ μ¬μ©νλ©΄ λ΄λΉκ²μ΄μ μ΄λ²€νΈμ νλ‘λ―Έμ€λ₯Ό μ°κ²°νμ¬ λΈλΌμ°μ κ° νμ΄μ§λ₯Ό μ λ°μ΄νΈνκΈ° μ μ λΉλκΈ° μμ μ΄ μλ£λ λκΉμ§ κΈ°λ€λ¦¬λλ‘ ν μ μμ΅λλ€. μ μμ λ₯Ό μ°Έμ‘°νμΈμ.
3. μ€ν¬λ‘€ 볡μ
λ΄λΉκ²μ΄μ μ€μ μ€ν¬λ‘€ μμΉλ₯Ό μ μ§νλ κ²μ μ’μ μ¬μ©μ κ²½νμ μ 곡νλ λ° μ€μν©λλ€. Navigation APIλ νμ€ν 리μμ μλ€λ‘ μ΄λν λ μ€ν¬λ‘€ μμΉλ₯Ό 볡μνλ λ©μ»€λμ¦μ μ 곡ν©λλ€. `NavigationHistoryEntry`μ `scroll` μμ±μ μ¬μ©νμ¬ μ€ν¬λ‘€ μμΉλ₯Ό μ μ₯νκ³ λ³΅μν μ μμ΅λλ€.
4. μ€λ₯ μ²λ¦¬
λ€νΈμν¬ μ€λ₯λ μ²λ¦¬λμ§ μμ μμΈμ κ°μ΄ λ΄λΉκ²μ΄μ μ€μ λ°μν μ μλ μ€λ₯λ₯Ό μ²λ¦¬νλ κ²μ΄ μ€μν©λλ€. `navigateerror` μ΄λ²€νΈλ₯Ό μ¬μ©νλ©΄ μ΄λ¬ν μ€λ₯λ₯Ό μ μμ μΌλ‘ ν¬μ°©νκ³ μ²λ¦¬νμ¬ μ ν리μΌμ΄μ μ΄ μΆ©λνκ±°λ μ¬μ©μμκ² μ€λ₯ λ©μμ§λ₯Ό νμνλ κ²μ λ°©μ§ν μ μμ΅λλ€.
5. μ μ§μ ν₯μ
Navigation APIλ‘ SPAλ₯Ό ꡬμΆν λ μ μ§μ ν₯μμ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. λΈλΌμ°μ μμ Navigation APIλ₯Ό μ§μνμ§ μλλΌλ μ ν리μΌμ΄μ μ΄ μ¬λ°λ₯΄κ² μλνλμ§ νμΈν΄μΌ ν©λλ€. κΈ°λ₯ κ°μ§λ₯Ό μ¬μ©νμ¬ `navigation` κ°μ²΄μ μ‘΄μ¬λ₯Ό νμΈνκ³ νμν κ²½μ° κΈ°μ‘΄ λΌμ°ν λ°©μμΌλ‘ λ체ν μ μμ΅λλ€.
κΈ°μ‘΄ λΌμ°ν λ°©μκ³Όμ λΉκ΅
SPAμ κΈ°μ‘΄ λΌμ°ν λ°©μμ μ’ μ’ `window.location` κ°μ²΄λ₯Ό μ‘°μνκ±°λ `react-router` λλ `vue-router`μ κ°μ μλνν° λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ λ° μμ‘΄ν©λλ€. μ΄λ¬ν λ°©μμ λ리 μ¬μ©λκ³ μ μ 립λμ΄ μμ§λ§ λͺ κ°μ§ νκ³κ° μμ΅λλ€:
- μ 체 νμ΄μ§ μλ‘κ³ μΉ¨: `window.location`μ μ§μ μ‘°μνλ©΄ μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ΄ λ°μν μ μμΌλ©°, μ΄λ λλ¦¬κ³ μ¬μ©μ κ²½νμ λ°©ν΄ν μ μμ΅λλ€.
- 볡μ‘μ±: κΈ°μ‘΄ λ°©μμΌλ‘ νμ€ν 리μ μνλ₯Ό κ΄λ¦¬νλ κ²μ νΉν ν¬κ³ 볡μ‘ν μ ν리μΌμ΄μ μμ 볡μ‘νκ³ μ€λ₯κ° λ°μνκΈ° μ½μ΅λλ€.
- μ±λ₯ μ€λ²ν€λ: μλνν° λΌμ°ν λΌμ΄λΈλ¬λ¦¬λ νΉν μ ν리μΌμ΄μ μ νΉμ μꡬ μ¬νμ μ΅μ νλμ§ μμ κ²½μ° μλΉν μ±λ₯ μ€λ²ν€λλ₯Ό μΆκ°ν μ μμ΅λλ€.
Navigation APIλ λΌμ°ν λ° νμ€ν 리 κ΄λ¦¬λ₯Ό μν λ κ°μνλκ³ μ±λ₯μ΄ λ°μ΄λλ©° νλΆν κΈ°λ₯μ κ°μΆ μ루μ μ μ 곡νμ¬ μ΄λ¬ν νκ³λ₯Ό ν΄κ²°ν©λλ€. μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ μμ κ³ , νμ€ν 리 κ΄λ¦¬λ₯Ό λ¨μννλ©°, λ΄λΉκ²μ΄μ μ΄λ²€νΈμ λν μΈλ°ν μ μ΄λ₯Ό μ 곡ν©λλ€.
λΈλΌμ°μ νΈνμ±
2024λ νλ° κΈ°μ€μΌλ‘ Navigation APIλ Chrome, Firefox, Safari, Edgeλ₯Ό ν¬ν¨ν μ΅μ λΈλΌμ°μ μ λ°μμ μ’μ μ§μμ λ°κ³ μμ΅λλ€. κ·Έλ¬λ νλ‘λμ μ ν리μΌμ΄μ μ Navigation APIλ₯Ό ꡬννκΈ° μ μλ νμ Can I useμ κ°μ 리μμ€μμ μ΅μ λΈλΌμ°μ νΈνμ± μ 보λ₯Ό νμΈνλ κ²μ΄ μ’μ΅λλ€. ꡬν λΈλΌμ°μ μ§μμ΄ νμμ μΈ κ²½μ° ν΄λ¦¬νμ΄λ λ체 λ©μ»€λμ¦ μ¬μ©μ κ³ λ €νμΈμ.
κ²°λ‘
Navigation APIλ κ³ κΈ λΌμ°ν λ° νμ€ν 리 κ΄λ¦¬ κΈ°λ₯μ κ°μΆ νλμ μ΄κ³ μ±λ₯μ΄ λ°μ΄λ SPAλ₯Ό ꡬμΆνκΈ° μν κ°λ ₯ν λꡬμ λλ€. κ°λ°μλ μ΄ APIμ κΈ°λ₯μ νμ©νμ¬ λ λΉ λ₯΄κ³ λΆλλ¬μ°λ©° λ§€λ ₯μ μΈ μ¬μ©μ κ²½νμ λ§λ€ μ μμ΅λλ€. μ΄κΈ° νμ΅ κ³‘μ μ΄ λ κ°λ¨νκ³ μ€λλ λ°©λ²μ μ¬μ©νλ κ²λ³΄λ€ κ°νλ₯Ό μ μμ§λ§, νΉν 볡μ‘ν μ ν리μΌμ΄μ μμ Navigation APIμ μ₯μ μ ν¬μν κ°μΉκ° μμ΅λλ€. Navigation APIλ₯Ό μ±ννμ¬ SPAμ μ μ¬λ ₯μ μ΅λν νμ©νμΈμ.